package com.zte.office.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zte.office.dao.IOfficeDao;
import com.zte.office.model.Contacts;
import com.zte.office.model.ContactsType;
import com.zte.office.model.contidion.ContactsCondition;
import com.zte.office.model.contidion.ContactsTypeCondition;
import com.zte.office.service.IOfficeService;
import com.zte.util.PageModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author luode
 * @version 1.0
 * @date 2022/10/26 星期三 09:53
 */
@Service
public class OfficeServiceImpl implements IOfficeService {

    @Autowired
    private IOfficeDao officeDao;

    @Override
    public PageModel<ContactsType> queryContactsTypeList(PageModel<ContactsType> pageModel,ContactsTypeCondition conn) {
        pageModel.setPageNum(pageModel.getPageNum()<=0?1: pageModel.getPageNum());
        pageModel.setPageSize(pageModel.getPageSize()<=0?4: pageModel.getPageSize());

        PageHelper.startPage(pageModel.getPageNum(), pageModel.getPageSize());
        List<ContactsType> contactsTypes = officeDao.queryContactsTypeList(conn);

        PageInfo<ContactsType> pageInfo = new PageInfo<>(contactsTypes);

        pageModel.setTotalPage(pageInfo.getPages());
        pageModel.setTotalRows(pageInfo.getTotal());
        pageModel.setData(contactsTypes);

        return pageModel;
    }

    @Override
    public List<Integer> queryTypeStatusList() {
        return officeDao.queryTypeStatusList();
    }

    @Override
    public List<ContactsType> queryContactsTypeListByUser(ContactsTypeCondition conn){
        List<ContactsType> contactsTypes = officeDao.queryContactsTypeList(conn);
        return contactsTypes;
    }
    @Override
    public Boolean AddContact(ContactsType contact) {
        return officeDao.AddContact(contact);
    }


    public int updateContact(ContactsType conn) {
        return officeDao.updateContact(conn);
    }

    @Override
    public PageModel<Contacts> queryContactsList(PageModel<Contacts> pageModel,ContactsCondition conn) {
        pageModel.setPageNum(pageModel.getPageNum()<=0?1: pageModel.getPageNum());
        pageModel.setPageSize(pageModel.getPageSize()<=0?4: pageModel.getPageSize());

        PageHelper.startPage(pageModel.getPageNum(),pageModel.getPageSize());
        List<Contacts> contacts = officeDao.queryContactsList(conn);

        PageInfo<Contacts> pageInfo = new PageInfo<>(contacts);
        pageModel.setTotalRows(pageInfo.getTotal());
        pageModel.setData(contacts);

        return pageModel;
    }

    @Transactional
    @Override
    public boolean removeContactType(String[] ids) {
        return officeDao.removeContactType(ids) && officeDao.moveContactToPersonalContact(ids)!=0;
    }
}
